﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

////自定义类型
////创建一个新的类型
//struct Student
//{
//	//这下面的都是关于创建对象的属性
//	char name[20];
//	int age;
//	int height;
//	float weight;
//	char id[16];
//}s1,s2,s3;//这个分号不能省略
////s1,s2,s3 是结构体变量，是全局变量
//struct Student s7;//和上面的s1，s2,s3一样，都是全局变量
//
//
//int main()
//{
//	struct Student s5 = { "王伟铭", 20, 170,57.5f,"2306641607"};//s5，s6是局部变量
//	//{ "王伟铭", 20, 170, 57, "2306641607" };是结构体变量的初始化(按照顺序初始化)
//	struct Student s6 = {.age=18,.name="袁美珠",.id=1314520,.height=155,.weight=45};
//	//先用.找到成员，再进行初始化（不按照顺序初始化）
//	//s5，s6是结构体变量（局部变量)
//	printf("%s %d %d %.2f %s",s5.name,s5.age,s5.height,s5.weight,s5.id);
//	//结构体变量在屏幕上打印的方法
//	//结构体变量 . 成员名   这个 . 是成员访问操作符
//	return 0;
//}



//结构体里面嵌套一个结构体
//struct S
//{
//	char c;
//	int n;
//};
//struct B
//{
//	struct S s;
//	int* p;
//	char arr[10];
//	float sc;
//};
//
//
//int main()
//{
//	struct B b = { {'w',99},NULL,"hehe",85.5f};//结构体嵌套初始化
//	printf("%c\n",b.s.c);
//	return 0;
//}


////整型提升
////所谓整型提升就是把小于整型字节的类型提升为普通整形的类型然后再进行加法运算
////加法运算完成之后，结果就被截断，然后再存储于c中
//int main()
//{
//	//char a = 12;
//	////00000000000000000000000000001100 --a
//
//	//char b = 24;
//	////00000000000000000000000000011000 --b
//
//	//char c = a + b;
//	//
//	////00001100+00011000 = 00100100
//	////⽆符号整数提升，⾼位补0
//	////00000000000000000000000000100100 --c 源码
//	//printf("%d",c);
//	char a = 3;
//	//00000000000000000000000000000011 --a
//
//	char b = 127;
//	//0000000000000000000000000111111 --b
//
//	char c = a + b;
//	//0111111 + 00000011 =10000010  第一位就相当于符号位了
//	//整型提升后 --  11111111111111111111111110000010 --c(补码)
//	//10000000000000000000000001111101  -- 反码
//	//10000000000000000000000001111110  -- 源码  -126
//	printf("%d",c);
//	return 0;
//}




//int main()
//{
//	printf("%d",3*2+1*2+3*4);
//	return 0;
//}


//#include<stdio.h>
//int fun()
//{
//	static int count = 1;
//	return ++count;
//}
//int main()
//{
//	int answer;
//	answer = fun() - fun() * fun();
//	printf("%d\n", answer);
//	//输出多少？ 
//	return 0;
//}



//#include<stdio.h>
//int main()
//{
//    int i = 1;
//    int ret = (++i) + (++i) + (++i);
//    printf("%d\n", ret);
//    printf("%d\n", i);
//    return 0;
//}